import { applyMiddleware, createStore } from 'redux'
import reducer from './reducers'
import thunk,{ThunkAction} from 'redux-thunk'
import { channelAction} from './action/channels'
import { composeWithDevTools } from 'redux-devtools-extension'
const store = createStore(reducer, composeWithDevTools(applyMiddleware(thunk)))
// 由于store.getState()函数的调用会得到一个对象 用dir可以打印对象里面的内容
console.dir(store.getState());
// 定义频道列表的数据类型并默认导出
export type Channel={
    id:number,name:string
}
export type NewsList={
    
}
// rootState用来定义Ajax请求回来的结果的数据类型
export type RootState = ReturnType<typeof store.getState>
// 这里ReturnType的作用是返回函数的返回值的类型
// RootAction的第四个参数可以|隔开形成一个联合类型 第一个参数是函数的返回值
export type RootAction=ThunkAction<void, RootState, unknown, channelAction>

export default store
